// import 'package:smb_connect/smb_connect.dart';
//
// class SmbManager {
//   String? host;
//   String? username;
//   String? password;
//   String? domain;
//   SmbConnect? smbConnect;
//   Function? onConnecting;
//   Function? onConnected;
//   Function(SmbConnect)? onDisconnect;
//   Function(dynamic err)? onConnectError;
//
//   SmbManager({
//     this.host,
//     this.username,
//     this.password,
//     this.domain,
//     this.onDisconnect,
//     this.smbConnect,
//   });
//
//   setConnectInfo({
//     String? host,
//     String? username,
//     String? password,
//     String? domain = '',
//   }) {
//     this.host = host;
//     this.username = username;
//     this.password = password;
//     this.domain = domain!;
//     smbConnect = null;
//   }
//
//   Future<void> connect({bool override = false}) async {
//     if (!override && smbConnect != null) {
//       return;
//     }
//     onConnecting?.call();
//     if (host == null || username == null || password == null) {
//       onConnectError?.call(Exception('host, username, password is required'));
//       throw Exception('host, username, password is required');
//     }
//
//     smbConnect = await SmbConnect.connectAuth(
//       host: host!,
//       username: username!,
//       password: password!,
//       domain: domain ?? '',
//       onDisconnect: (connect) {
//         smbConnect = null;
//       },
//     ).catchError((err) {
//       onConnectError?.call(err);
//       throw err;
//     });
//     onConnected?.call();
//   }
//
//   Future<List<SmbFile>> listShares() async {
//     await connect();
//     return await smbConnect!.listShares();
//   }
//
//   Future<List<SmbFile>> listFiles(String path) async {
//     await connect();
//     SmbFile folder = await smbConnect!.file(path);
//     return smbConnect!.listFiles(folder);
//   }
// }
